home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #14
/
Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO
/
utils
/
mousk304.zip
/
MOUSKEYS.DOC
< prev
Wrap
Text File
|
1996-02-04
|
95KB
|
1,997 lines
MOUSKEYS 3.04
TABLE OF CONTENTS
WHAT IS MOUSKEYS? . . . . . . . . . . . . . . . . . . . . . . . . . . 3
HOW TO USE MOUSKEYS . . . . . . . . . . . . . . . . . . . . . . . . . 3
COMMAND LINE OPTIONS . . . . . . . . . . . . . . . . . . . . . . . . 6
Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Quiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Uninstall . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ResetMouseHardware . . . . . . . . . . . . . . . . . . . . . . . 9
ClipboardContents . . . . . . . . . . . . . . . . . . . . . . . 10
LengthOfDelay . . . . . . . . . . . . . . . . . . . . . . . . . 10
StuffKeyboardBuffer . . . . . . . . . . . . . . . . . . . . . . 11
KeyboardHardwareInterrupt . . . . . . . . . . . . . . . . . . . 11
AlwaysDoEnter . . . . . . . . . . . . . . . . . . . . . . . . . 12
Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
THE MOUSKEYS ENVIRONMENT VARIABLE . . . . . . . . . . . . . . . . . . 18
CODE WORDS RECOGNIZED BY MOUSKEYS . . . . . . . . . . . . . . . . . . 19
DECIMAL ASCII CODES . . . . . . . . . . . . . . . . . . . . . . . . . 20
DECIMAL EXTENDED ASCII CODES . . . . . . . . . . . . . . . . . . . . 21
DECIMAL KEYBOARD SCAN CODES . . . . . . . . . . . . . . . . . . . . . 21
MOUSKEYS AND THE MOUSE CURSOR . . . . . . . . . . . . . . . . . . . . 22
MOUSKEYS AND MENUS . . . . . . . . . . . . . . . . . . . . . . . . . 26
CHANGING MODES ON THE FLY . . . . . . . . . . . . . . . . . . . . . . 28
THE MICROSOFT MOUSE DRIVER . . . . . . . . . . . . . . . . . . . . . 29
CAVEATS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
WHY I WROTE MOUSKEYS THE WAY I DID . . . . . . . . . . . . . . . . . 32
A WORD FROM THE SPONSOR . . . . . . . . . . . . . . . . . . . . . . . 33
OTHER PROGRAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MOUSKEYS 3.04 Page 1 of 35
WARRANTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
REVISION HISTORY . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MOUSKEYS 3.04 Page 2 of 35
Do you have a mouse attached to your computer? Do you have any programs
that you wish used that mouse, but they don't? Then MOUSKEYS is for you.
WHAT IS MOUSKEYS?
═════════════════
* A program that "fakes" other programs into thinking keystrokes came
from the keyboard, when they really didn't - they were initiated by a
mouse. It works similar to other programs, e.g., the LogiMenu program
that comes with LogiTech mice. The major difference, however, is that
MOUSKEYS will let the mouse enter ANY keystroke, not just ASCII
characters.
* A Terminate-and-Stay-Resident (TSR) program. It uses approximately 6K
(6000 bytes) of RAM (Random Access Memory).
* A program that can have any of its settings changed, be ENABLEd (turned
on), DISABLEd (turned off), or UNINSTALLed (completely removed from
memory) at any time from the DOS prompt.
* A program that helps your mouse load faster for virtually all programs
that use a mouse, not just MOUSKEYS.
HOW TO USE MOUSKEYS
═══════════════════
First of all, MOUSKEYS works in association with a Microsoft (or
compatible) mouse and its corresponding Mouse Driver (MOUSE.COM,
MOUSE.EXE, or MOUSE.SYS). You must have the Mouse Driver installed
before MOUSKEYS will work. See the documentation that came with your
mouse if you need any further details.
MOUSKEYS is a Terminate and Stay Resident (TSR) program that runs in the
background of most other programs. MOUSKEYS allows you to use your mouse
with almost any program, even if it wasn't designed to use a mouse. When
you move the mouse or press and release one of the mouse buttons,
MOUSKEYS will make a program think you typed something on the keyboard.
Programs will think you are typing from the keyboard when, in fact, you
aren't.
MOUSKEYS will also speed up the way your mouse loads with almost any
program that normally uses a mouse (not just MOUSKEYS). With MOUSKEYS
installed in memory, a program that normally uses a mouse will usually
load much faster than it does without MOUSKEYS installed (sometimes by as
much as several seconds). A more detailed description of this is given
below under the "MOUSKEYS /R" Option.
You install MOUSKEYS into memory by typing MOUSKEYS [options] at the DOS
command line. If MOUSKEYS is already installed in memory, typing
MOUSKEYS [options] will update the MOUSKEYS already in memory. Any time
MOUSKEYS is updated in memory, the Mouse Driver is told to start looking
at MOUSKEYS again. There is a rather lengthy discussion of why this is
necessary below under "THE MICROSOFT MOUSE DRIVER".
MOUSKEYS 3.04 Page 3 of 35
This means, for example, that you can load MOUSKEYS into memory when you
first start your computer (in your AUTOEXEC.BAT file), and leave it in
place all the time. It can be DISABLEd (MOUSKEYS /D) until you need it,
ENABLEd and updated (e.g., MOUSKEYS /E /Mx:Code /Bx:Code /L:nn) to run a
particular program, and then DISABLEd until it is needed again (MOUSKEYS
/D). Since MOUSKEYS only uses about 6K of RAM, and can be loaded into
high memory, leaving it in memory shouldn't be much of a burden to your
computer. However, if it is, you can always UNINSTALL it (MOUSKEYS /U)
from memory completely until you need it again.
MOUSKEYS is probably most useful in Batch files (if you don't know how to
write Batch files, I strongly encourage you to learn - the ability to
write and use Batch files will save you literally hours of work and
frustration in years to come). If you know how to write Batch files, you
can have MOUSKEYS automatically ENABLE and DISABLE itself for each
particular program with which you want to use MOUSKEYS. For example, you
could write a batch file to run "Program" like this:
ECHO OFF
MOUSKEYS /Enable [other options]
REM Turn MOUSKEYS On and Reset It
IF ERRORLEVEL 1 GOTO ERROR
Program
MOUSKEYS /Disable
REM Turn MOUSKEYS Off
GOTO END
:ERROR
ECHO Error occurred while installing/updating MOUSKEYS.
:END
You could then use your mouse with "Program" instead of (or in addition
to) the keyboard.
MOUSKEYS has several "modes" in which it can operate, some of which can
be changed "on the fly" by holding down the Shift, Alt, and/or Ctrl keys
while pushing one or more of the mouse buttons. What exactly these
various "modes of operation" are and how to change back and forth between
them is discussed in the various sections below.
MOUSKEYS sets the following ERRORLEVELs after it executes from the DOS
command line, to give you an indication of what happened. If you don't
understand the purpose or value of ERRORLEVELs, I suggest you read about
them in your DOS manual.
MOUSKEYS 3.04 Page 4 of 35
╔════════════╦═════════════════════════════════════════════════════╗
║ ERRORLEVEL ║ MEANING ║
╠════════════╬═════════════════════════════════════════════════════╣
║ 0 ║ No problem - MOUSKEYS was installed or updated OK ║
║ 1 ║ Couldn't understand one or more of the Options ║
║ 2 ║ Couldn't find a Mouse Driver ║
║ 3 ║ Memory problem with the computer ║
║ 4 ║ Tried UNINSTALL or TABLE without MOUSKEYS installed ║
║ 5 ║ A different version of MOUSKEYS was found in memory ║
╚════════════╩═════════════════════════════════════════════════════╝
There is no sure way of telling beforehand whether a particular program
will work with MOUSKEYS or not, though most programs should work just
fine. You will just have to try it with any program in which you're
interested.
MOUSKEYS 3.04 Page 5 of 35
COMMAND LINE OPTIONS
════════════════════
MOUSKEYS is fairly liberal in what it will accept as Options. All
Options must be entered separately, and must start with a "/". Options
that require a number or character to be entered as part of the Option
(indicated by a ":" separator in the lists below) can either use a ":" or
"=" as the separator. They can be upper or lower case, do not need to be
separated by spaces, and can be entered in any order. If the same Option
is entered twice with two different settings, or conflicting Options are
entered, the last one entered takes precedence.
Note also that there are usually several different ways to enter the same
Option. For example, to DISABLE MOUSKEYS (turn it off), you could type
any of the following: "MOUSKEYS /D", "MOUSKEYS /Disable", or
"MOUSKEYS /Off". The Options all have a "shorthand" code ("/D" in this
case) and one or more "longhand" codes ("/Disable" and "/Off" in this
example). The "shorthand" codes take up much less room and are easier to
type, but the "longhand" codes are probably easier to remember and to
read. You can use whichever makes the most sense to you.
For instance, the following are equivalent:
MOUSKEYS /MoveLeft=Left /ButtonLeft&Right=@80 /DelayLength:2 /Disable
MOUSKEYS /mL = LEFT /BLR:@80 /l=1/L=2 /d
/H
/Help /? ?
This pulls up a HELP screen which gives a quick summary of the
possible command line Options for MOUSKEYS.
/Q
/Quiet
This tells MOUSKEYS to be QUIET (not to print any status messages to
the screen), as long as everything is OK. MOUSKEYS always prints
error messages to the screen.
MOUSKEYS 3.04 Page 6 of 35
/T
/Table /Tbl /StatusTable /StatusTbl /Status
This pulls up a TABLE that shows the current status of MOUSKEYS as
it sits in memory. A typical example for a two-button mouse is:
╔═════════════════════════════════════════════════╗
║ Current MOUSKEYS Status: Enabled ║
║ Simulating KEYBOARD hardware Scan Codes ║
║ Type <Enter> ONLY after multi-digit menu items ║
║ Clipboard: "The Clipboard's first few chars"... ║
╠═════════════════════════════════════════════════╣
║ Delay LENGTHS: Horizontal= 1 Vertical= 3 ║
╠════════════════╦══════════════╤═════════════════╣
║ Characters ║ ASCII │ Scan Codes ║
╟────────────────╫──────────────┼─────────────────╢
║ Left Button ...║*Enter 13*│ 28 0 0 0 ║
║ Right Button ..║ Escape 27 │ 1 0 0 0 ║
║ Both Buttons ..║ "a" 97 │ 30 0 0 0 ║
╟────────────────╫──────────────┼─────────────────╢
║ Move Left .....║ GLeft @ 75 │ 224 75 0 0 ║
║ Move Right ....║ GRight @ 77 │ 224 77 0 0 ║
║ Move Up .......║ GreyUp @ 72 │ 224 72 0 0 ║
║ Move Down .....║ GDown @ 80 │ 224 80 0 0 ║
╚════════════════╩══════════════╧═════════════════╝
The first line indicates whether MOUSKEYS is ENABLEd or DISABLEd
(turned on or turned off). The second line indicates which mode
MOUSKEYS is in: STUFFing the Keyboard Buffer with ASCII codes or
simulating KEYBOARD hardware interrupts with Scan Codes (a further
description of what this means is given below). The third line
indicates whether MOUSKEYS types an <Enter> key after ALL menu items
or ONLY after multi-digit menu items, when MOUSKEYS is used as a
Menu Picker (see further detailed descriptions below). The fourth
line shows you the first several characters that are in the
Clipboard (exactly what the Clipboard is and does is discussed in
the various sections below). If the Clipboard does not contain any
information, this line in the TABLE will read "Clipboard: Empty".
The fourth line indicates the current settings for delay LENGTHs
(how sensitive the mouse is to being moved). The remaining lines
indicate the keystrokes that MOUSKEYS performs when mouse button(s)
are pressed or the mouse is moved.
The column labeled "ASCII" first contains a description of the key,
followed by the decimal ASCII code for the character (for example,
the ASCII code for the Enter key is 13). If the character is an
Extended ASCII character (Function keys, arrow keys, etc.) there is
an "@" symbol in front of the ASCII code. There are further details
on ASCII codes, Extended ASCII codes, Scan Codes, the significance
of the "@" symbol, etc., in the various sections below.
MOUSKEYS 3.04 Page 7 of 35
Also in this example, the ASCII code for the Left Button is
surrounded by two *'s. This indicates that the Mouse Cursor is
turned on, and that the Left Mouse button is used as a Menu Picker,
Clipboard, and/or Cursor Mover button. Further descriptions of
Mouse Cursor, Menu Picker, Clipboard, and Cursor Mover are given
below.
The /T (TABLE) Option only works if MOUSKEYS is already installed in
memory.
/D
/Disable /Off
This DISABLEs MOUSKEYS. MOUSKEYS remains in memory with the /D
Option, but doesn't do anything useful. It can be reENABLEd with
the /E Option. It can be UNINSTALLed from memory completely with
the /U Option.
/E
/Enable /Reset /On
This ENABLEs and Resets MOUSKEYS. This will turn MOUSKEYS back on
after you have DISABLEd it with /D. Whether MOUSKEYS was DISABLEd
or not, /E WILL RESET EVERYTHING, except the Clipboard, back to the
defaults (the delay LENGTHs, ASCII codes, Scan Codes, and ASCII/Scan
Code use Options). When MOUSKEYS is initially installed in memory,
the default is /E (MOUSKEYS is ENABLEd).
Because the last Option entered on the command line always takes
precedence, you should usually make /E the first Option you enter.
For example, "MOUSKEYS /E /ML='1'" ENABLEs MOUSKEYS, Resets
everything back to the default values, and THEN changes the Left
Movement character to '1'. The end result of a
"MOUSKEYS /ML=F1 /E" will be to simply ENABLE and Reset MOUSKEYS,
just as if the "/ML=F1" had never been entered.
/U
/Uninstall /Remove
This will permanently UNINSTALL (or at least try to UNINSTALL)
MOUSKEYS from memory. Effectively, the same thing can be
accomplished with MOUSKEYS /D, but MOUSKEYS /U will free up about 6K
of RAM on your machine to use for other things.
MOUSKEYS 3.04 Page 8 of 35
/R
/ResetMouseHardware /ResetMouseHdwre /ResetMouse
/ResetHardware /ResetHdwre /HardwareReset /HdwreReset
This is how you force MOUSKEYS to RESET the Mouse Hardware. The
purpose of this Option requires some explanation.
Let's assume for a moment that you do not have MOUSKEYS installed in
memory. You start to load a program that normally uses a mouse (it
doesn't matter which one, as long as it normally uses a mouse). If
you pay attention while the program is loading, you may notice a
long delay (usually one to five seconds), during which the program
doesn't seem to be doing anything. This delay is caused by the
Mouse Driver (MOUSE.COM, MOUSE.EXE, or MOUSE.SYS).
When a program uses a mouse, one of the first things it does is to
ask the Mouse Driver if your computer even has a mouse installed.
If you have a mouse installed, the Mouse Driver tells the program
about it, and it also does something else - it "Resets the Mouse
Hardware." I don't know exactly what "Resetting the Mouse Hardware"
does, but I know it takes a long time to do. Some mice do it faster
than others. My Logitech mouse at home, for example, takes less
than 1 second to Reset the Hardware. My Microsoft mouse at work,
however, takes more than 2 seconds (although 2 seconds sounds pretty
fast, it seems like a very long time when it's unnecessary).
As far as I can tell, the only reason programs ask the Mouse Driver
to do a Hardware Reset on the Mouse is because that's what Microsoft
told them they had to do. There is also another way to ask the
Mouse Driver if the computer has a mouse or not. The second way of
asking, instead of Resetting the Mouse Hardware, just Resets the
Mouse Software (the Mouse Driver). Resetting the Software happens
so fast that you don't even notice it.
Most programs just go through the Mouse Driver (software) to get to
the Mouse. There are also others that directly manipulate the Mouse
Hardware, but restore things back to normal when they get finished.
There is only one program I have found so far that screws things up
so bad that you actually have to Reset the Mouse Hardware when you
use it - Microsoft Windows. There may be other programs out there
somewhere that require Hardware Resets of the mouse, but I haven't
ran across them yet.
While MOUSKEYS is installed in memory, when a program asks the Mouse
Driver to do a Hardware Reset, MOUSKEYS intercepts it and changes it
to a Software Reset (unless you are running Microsoft Windows).
Programs never know the difference, and they will load much faster
(sometimes by as much as several seconds). MOUSKEYS knows when you
are running Microsoft Windows, and when you are, lets the Hardware
Resets go through unchanged.
MOUSKEYS 3.04 Page 9 of 35
The /R (Hardware RESET) Option is for you to use when you run across
a program that requires a Hardware Reset of the Mouse (other than
Microsoft Windows, which is handled automatically by MOUSKEYS).
When a program messes up the Mouse Hardware, it will screw up the
programs that you try and run AFTER it runs. If a program messes up
the Mouse Hardware, you will need to do a "MOUSKEYS /R" after you
get out of the program, not before you get into it (the best way to
do this is with a Batch File).
Note that when you install MOUSKEYS into memory (the first time you
type "MOUSKEYS [options]", which will probably be in your
AUTOEXEC.BAT file), MOUSKEYS always does a Hardware Reset, even if
you don't give it a /R option. This is because MOUSKEYS cannot tell
whether or not you need to do a Hardware Reset (you may have just
exited out of Microsoft Windows, for example). MOUSKEYS plays it
safe and does a Hardware Reset when you first install it. After it
is installed, all programs, including MOUSKEYS, will do a Software
Reset (unless, of course, Microsoft Windows is somehow involved).
/C:"Txt"
/ClipboardContents:"Txt" /ClipbrdContents:"Txt" /ClipbdContents:"Txt"
/Clipboard:"Txt" /Clipbrd:"Txt" /Clipbd:"Txt"
This will enter "Txt" into the Clipboard, overwriting whatever was
in the Clipboard before (if there was anything). You can surround
the text either with double quotes (") or single quotes (').
Normally, you copy text into the Clipboard using the mouse, but this
is another way to do it. Exactly what the Clipboard is and how to
use it is discussed in the various sections below, especially in the
section "MOUSKEYS AND THE MOUSE CURSOR".
/L:nn /LH:nn /LV:nn
LengthOfDelay LengthOfDly LenOfDelay LenOfDly Length Len
DelayLength DelayLen DlyLength DlyLen Delay Dly
Horizontal Horiz Hor
Vertical Vert Ver
These Options are how you adjust the sensitivity of the mouse. The
nn is the LENGTH of the delay (in Mickeys) MOUSKEYS uses between
sending one character and the next. /LH adjusts the HORIZONTAL
(left-right) delay, /LV adjusts the VERTICAL (up-down) delay, and /L
adjusts them both. Nn can be any number between 1 and 100.
In place of the "L", you can use "LengthOfDelay", LengthOfDly", etc.
In place of the "H", you can use "Horizontal", "Horiz", or "Hor",
and in place of the "V" you can use "Vertical", "Vert", or "Ver".
The following, for example, are equivalent:
MOUSKEYS /LH:1 /LV:3
MOUSKEYS /LengthofDelayHorizontal=1 /DelayVert=3
MOUSKEYS 3.04 Page 10 of 35
The delay LENGTH is measured in Mickeys. Right now, you're probably
asking, "What's a Mickey?"
When you move the mouse back and forth across the table, the mouse
is continually sending information back and forth to the computer.
The amount you move the mouse is measured in Mickeys, where 1 Mickey
= 1/200" (or so they say). Every time you move the mouse 1/200" in
any direction, it tells the computer (through the Mouse Driver) that
it moved 1 Mickey.
You can have MOUSKEYS send a movement character every time the mouse
moves 1 Mickey by setting LH and/or LV to 1. For a lot of programs,
though, this is far too sensitive. 1/200" is not very far to move
the mouse. Virtually every time you breathe you can accidentally
move the mouse 1 Mickey. You can also have MOUSKEYS wait for the
mouse to be drug halfway across the table before it sends a
character by setting LH and/or LV to 100. The most useful values
for delay LENGTHs are usually between 1 and 10. You will have to
experiment with different delay LENGTHs for different programs to
see what works best.
The defaults are LH=1 and LV=3.
/S /K
/StuffKeyboardBuffer /StuffKeyboardBuff /StuffKbdBuffer
/StuffKbdBuff /StuffBuffer /StuffBuff /Stuff /ASCII
/KeyboardHardwareInterrupt /KeyboardHardwareInt
/KeyboardHdwreInterrupt /KeyboardHdwreInt /KbdHardwareInterrupt
/KbdHardwareInt /KbdHdwreInterrupt /KbdHdwreInt
/HardwareInterrupt /HardwareInt /HdwreInterrupt /HdwreInt
/Interrupt /Int /ScanCodes /ScanCode
These two Options are complements of each other. MOUSKEYS /S tells
MOUSKEYS to STUFF the Keyboard Buffer with ASCII codes. MOUSKEYS /K
tells MOUSKEYS to perform a "fake" KEYBOARD hardware interrupt using
Scan Codes. The difference between the two requires a rather
lengthy explanation.
When you press (or release) a key on the keyboard, the keyboard
generates what is known as a hardware interrupt. This tells the
computer that the keyboard has a keystroke waiting for it. When the
computer is ready for the keystroke, it asks the keyboard to tell it
which key was pressed or released. The keyboard responds by giving
the computer a Scan Code. Each key on the keyboard has a unique
Scan Code (or set of Scan Codes) when it is pressed, and a different
Scan Code (or set of Scan Codes) when it is released.
MOUSKEYS 3.04 Page 11 of 35
The Scan Code is then processed by the BIOS (Basic Input Output
System). Depending on which key was pressed or released, and which
key(s) were pressed or released before that, the BIOS either stuffs
an ASCII character into the Keyboard Buffer, remembers that the key
was a "Shift Key" (Shift, Alt, Ctrl, CapLk, NumLk, etc.), or
performs some other function (such as printing the screen in the
case of Shift-PrtScr). This knowledge of what went on before makes
the keyboard BIOS pretty complicated.
For instance, if you hit the "a" key, whether or not the BIOS puts
an "a" into the Keyboard Buffer depends on how many times the CapsLk
key was previously pressed and released, and whether or not you have
the Shift, Alt, or Ctrl keys pressed at the same time. There is not
a 1-to-1 correspondence between Scan Codes and ASCII characters.
For example, there is no single Scan Code that corresponds to the
ASCII character 'A', and the CapsLk key doesn't have an ASCII
character at all.
Most programs let the BIOS handle all, or at least most, of the
keyboard work - they just take their input from the Keyboard Buffer.
If you want to use MOUSKEYS with this kind of program (again, most
programs are this way), you should use MOUSKEYS /S to STUFF the
Keyboard Buffer with ASCII characters.
MOUSKEYS /K is intended to be used with programs that bypass the
BIOS and handle keyboard input themselves. MOUSKEYS /K tries to
"fake" the program out by simulating a KEYBOARD hardware interrupt.
MOUSKEYS gives the computer a Scan Code (with software) that the
computer thinks came from the keyboard hardware. Unfortunately,
this doesn't always work correctly, but it does work most of the
time. If you're using a program and the /S Option doesn't work, try
/K. The most likely type of program to need the /K Option would be
a game; word processors, spreadsheets, etc. will most likely work
fine with /S.
The default is /S (to STUFF the Keyboard Buffer with ASCII codes).
/A /O
/AlwaysDoEnter /AlwaysEnter /AlwaysDoCR /AlwaysCR /Always
/Only /MultiDigit /Multi
These two Options are complements of each other, and only have an
effect when MOUSKEYS is used as a Menu Picker (see the sections
below on how to make MOUSKEYS be a Menu Picker). MOUSKEYS /A tells
MOUSKEYS to ALWAYS type an <Enter> key after typing the menu
character(s), even if the menu item is a single-digit number or a
single letter. MOUSKEYS /O tells MOUSKEYS to type the <Enter> key
afterwards ONLY if the menu item is a multi-digit number or a whole
word. I know this is confusing if you haven't read the sections
below yet, so here is a brief explanation.
MOUSKEYS 3.04 Page 12 of 35
When MOUSKEYS is used as a Menu Picker, it searches the area on the
screen surrounding the Mouse Cursor and "guesses" what you want to
type. This is very useful in programs with menus somewhere on the
screen where you need to type a letter or number to get the program
to do something special. With these programs, you simply type the
letter (or number) from the menu, and the program does what you want
it to. Other programs, however, need you to type something from the
menu and then type the <Enter> key before the program will do
anything. The /A and /O options will let MOUSKEYS work with either
type of program.
With the /O option, MOUSKEYS will ONLY type an <Enter> key after
picking a multi-digit number or typing an entire word from a menu.
With the /A option, MOUSKEYS will ALWAYS type an <Enter> key after
picking a letter or number from a menu. Note that even when in the
/A mode, MOUSKEYS will only type an <Enter> key after picking a
letter or a number from a menu. If what MOUSKEYS finds to type from
the menu is a function key or other "special" key (like Home, End,
Arrow Keys, PgUp, PgDn, etc.), MOUSKEYS will not type an <Enter> key
afterwards even if the /A mode is selected.
For further descriptions of Menu Picker, Mouse Cursor, multi-digit
menu items, etc., see the sections below, especially "MOUSKEYS AND
THE MOUSE CURSOR" and "MOUSKEYS AND MENUS".
The default is /O (to type an <Enter> key ONLY after finding a
multi-digit menu item).
/ML:Code /MR:Code /MU:Code /MD:Code
/BL:Code /BR:Code /BC:Code /BLR:Code /BCL:Code /BCR:Code /BCLR:Code
Movement Move Mov Mv
Button Btn
Left Lft Lt
Right Rt
Up
Center Ctr Middle Mid
Down Dn
These Options are how you tell MOUSKEYS what ASCII characters or
Scan Codes to use when you do something with the mouse. The first
letter or word (M or B) tells MOUSKEYS whether you are referring to
a mouse MOVEMENT or a mouse BUTTON, and the remaining character(s)
or word(s) tell you which MOVEMENT (Left, Right, Up, or Down) or
which BUTTON(s) (Left, Right, Center, Left & Right, Center & Left,
Center & Right, all three) you are referring to.
MOUSKEYS 3.04 Page 13 of 35
If you have a two-button mouse, MOUSKEYS will only let you enter the
/BL, /BR, or /BLR button Options. For button combinations (where
you press more than one button at the same time: /BLR, /BCL, /BCR,
and /BCLR) you can enter the L's, R's, and C's in any order (e.g.,
/BLR is the same thing as /BRL). Also for button combinations, you
can enter an "&" between the L's, R's, and C's (e.g., /BLR and /BL&R
are the same.
The following two lines, for example, are equivalent:
MOUSKEYS /MoveLeft=Left /ButtonLeft&Right=F1
MOUSKEYS /ML=Left /BLR=F1
The "Code" after the ":" or the "=" is the ASCII character or Scan
Code you want MOUSKEYS to use, and can be anything from the
following lists. Of particular importance are the first two Codes
(characters enclosed in quotes and Code Words), and the * (Menu
Picker/Cursor Mover/Clipboard) Code. These are the easiest to use
and to understand, and will handle most situations where you may
want to use MOUSKEYS. The remaining Codes are mainly for "unusual"
situations where you want MOUSKEYS to simulate some extremely
unusual keystroke combination or if you have a particularly off-the-
wall keyboard.
'C' or "C"
A single ASCII character enclosed in quotes. Actually,
MOUSKEYS will accept just a 'C or "C, but it's better not to
do it since it could be confusing, and since DOS doesn't
always like it.
CodeWord
A Code Word for one of the keys on the keyboard (for example,
F1, Enter, CapsLock, Shift, etc.). See the Table below for a
list of Code Words that MOUSKEYS recognizes. If you want
MOUSKEYS to simulate holding more than one key down at a
time, you need to put a "-" between two Codes Words (for
example, "MOUSKEYS /BL=Shift-F1" or
"MOUSKEYS /BL=Ctrl-Alt-Del"). You can also put a "-" between
a Code Word and a letter or number (e.g.,
"MOUSKEYS /BL = Ctrl-C" or "MOUSKEYS /BL=Alt-1").
There are two "special" Code Words that MOUSKEYS handles a
little differently than the rest of the Code Words -
"PrintScreen" and "Break" (or the allowable variations of
these Code Words). The reason these Code Words require
special handling is that what they should do depends on the
situation.
MOUSKEYS 3.04 Page 14 of 35
To print the screen with the keyboard from older computers
(PC's and PC/XT's), you have to do a <Shift>-<Grey*>. The
keyboard that comes with newer computers (PC/AT's and newer)
has a special <PrintScreen> key that you don't need to
<Shift>. MOUSKEYS knows what kind of keyboard you have, and
when you enter the "PrintScreen" Code Word, MOUSKEYS assumes
you will want the mouse movement or button to print the
screen. If you have an old computer, and you tell MOUSKEYS
to "PrintScreen", it does a <Shift>-<Grey*>. If you have a
newer computer, MOUSKEYS does a <PrintScreen>.
Regardless of whether your computer is old or new, in order
to "Break" a program, you have to Enter a <Ctrl>-<Break>;
the <Break> key all by itself does not "Break" anything. If
you enter the "Break" Code Word (or allowable variations of
"Break"), MOUSKEYS automatically does a <Ctrl>-<Break>. If
you study the Decimal Scan Code Table below, you will see
that <Ctrl>-<Break> on older computers (PC's and PC/XT's) is
handled differently than it is on newer computers. Again,
MOUSKEYS knows whether your computer is "old" or "new", and
handles all of the details automatically - you just have to
give MOUSKEYS the "Break" Code Word.
nnn (decimal ASCII code)
A decimal ASCII code. This is the way to enter ASCII
characters you can't enter using the quotes or the Code
Words. It will probably be a fairly rare situation when the
quotes or Code Words won't work, so you probably won't be
entering decimal ASCII codes very often (except for the do-
nothing code of 0). Entering a 0 tells MOUSKEYS not to do
anything (to ignore that particular mouse movement or
button). See the Table below for a list of decimal ASCII
codes.
@nnn (extended ASCII code)
An Extended ASCII code. Extended ASCII codes include things
like function keys, arrow keys, Home, End, PgUp, PgDn, Ins,
Del, etc. Most Extended ASCII codes also have an equivalent
Code Word (for example "MOUSKEYS /BL:@59" is the same as
"MOUSKEYS /BL:F1"). Since Code Words are usually easier to
use, you probably won't be entering Extended ASCII codes with
"@nnn" very often. See the Table below for a list of
Extended ASCII codes.
MOUSKEYS 3.04 Page 15 of 35
#nn,nn,nn,nn
A list of up to four Scan Codes to use when performing a
"fake" KEYBOARD hardware interrupt. The individual Scan
Codes must be separated by commas. With this Option,
MOUSKEYS does not attempt to obtain a corresponding ASCII
code (see the detailed explanation below). Use the &nn
Option to also obtain an ASCII code. See the Tables below
for a list of Scan Codes.
&nn,nn,nn,nn
A list of up to four Scan Codes to use when performing a
"fake" KEYBOARD hardware interrupt. The individual Scan
Codes must be separated by commas. With this Option,
MOUSKEYS attempts to obtain a corresponding ASCII code (see
the detailed explanation below). Use the #nn Option if you
do not want an ASCII code. See the Tables below for a list
of Scan Codes. There are some special keystroke sequences
discussed below in the section called "CAVEATS" that do not
work correctly when using the &nn,nn,nn,nn Option.
? Ask AskMe
This is for when you don't want to look up a code in one of
the tables. When you enter a ? (or "Ask" or "AskMe"),
MOUSKEYS comes back and asks you what character or key you
would like to use - and you have to type it on the keyboard.
If you are using MOUSKEYS in a Batch file to start a program,
you probably wouldn't want to use the ? Option (since
MOUSKEYS will stop the batch file in the middle to ask you
what characters you want to use). There are some special
keystroke sequences discussed below in the section called
"CAVEATS" that do not work correctly when using a ?.
* Menu MenuPick MenuPicker Copy CopyBuff CopyBuffer
This Option only works for buttons, not for movements. When
you enter a * (or "Menu" or "MenuPick" or ...) for one of the
buttons, MOUSKEYS becomes a Menu Picker/Cursor Mover/
Clipboard. In becoming a Menu Picker, MOUSKEYS completely
changes its personality. The personality change is so
radical, in fact, that it is too lengthy to discuss here.
Read the section below called "MOUSKEYS AND THE MOUSE CURSOR"
for a complete description.
*- Menu- MenuPick- MenuPicker- Cpy- Copy- CopyBuff- CopyBuffer-
This Option only works for buttons, not for movements. When
you enter a *- (or "Menu-" or "MenuPick-" or ...) for one of
the buttons, MOUSKEYS turns its Menu Picker/Cursor Mover/
Clipboard off and becomes a "regular" mouse button. The
concept of a Menu Picker is rather complicated, and is
discussed below in the section called "MOUSKEYS AND THE MOUSE
CURSOR".
MOUSKEYS 3.04 Page 16 of 35
MOUSKEYS maintains internally a table of which mouse actions
correspond to which ASCII characters and Scan Codes (this table can
be viewed with the /T Option). MOUSKEYS does its best to make sure
that an ASCII character and a Scan Code in the table always
correspond to each other. For example, an "A" in the ASCII
character would most likely be a "Shift-a" (42,30) in the Scan
Codes. MOUSKEYS does this so that you only have to enter one of the
two possibilities, but can use either /S or /K. MOUSKEYS has
several ways to try and keep the ASCII characters and Scan Codes
matched up.
If you use a Code Word, MOUSKEYS automatically enters both the ASCII
code and the Scan Code(s) that are associated with the key.
MOUSKEYS takes care of all the dirty work for you.
When you enter ASCII codes ('C', "C", nnn, or @nnn), MOUSKEYS looks
up a corresponding Scan Code in a table it keeps internally.
However, there can be more than one way to enter an ASCII character
(for example, ASCII code 13 can be entered as the Enter key, the
Grey Enter key, Ctrl-m, and maybe half a dozen other ways). Because
not all programs treat all ways the same (some programs treat Enter
very differently from Ctrl-m), the Scan Codes MOUSKEYS has in its
table may not be the ones you want to use. If you are entering your
keys as ASCII characters, but will be using Scan Codes (/K), things
may not happen like you think they will. Rule of thumb: if you will
be using Scan Codes (/K), enter the Scan Codes (with Code Words,
#nn, or &nn), not the ASCII characters.
If you enter Scan Codes with #nn,nn,nn,nn, MOUSKEYS does not even
attempt to find a corresponding ASCII code. It makes the ASCII code
a 0 (do nothing) character. This Option is especially useful to
enter Scan Codes that do some special function, rather than generate
an ASCII code (e.g., Ctrl-Alt-Del).
If you enter Scan Codes with &nn,nn,nn,nn, MOUSKEYS gets the
matching ASCII character by performing a "fake" KEYBOARD hardware
interrupt using the Scan Codes you gave it (just like it does with
the /K Option). MOUSKEYS then uses whatever shows up in the
Keyboard Buffer as the ASCII character. If more than one character
appears in the Keyboard Buffer, it only uses the first one. If
nothing appears in the Keyboard Buffer, MOUSKEYS puts a 0 (do
nothing) in the ASCII character.
MOUSKEYS lets you put up to four Scan Codes together to make a
single "keystroke", but only lets you use a single ASCII character.
This was done because some ASCII characters or functions (see the
Scan Code Table for enhanced keyboards below) require up to four
Scan Codes. Most keystrokes, however, require only one or two Scan
Codes. You can, by entering the correct Scan Codes, have MOUSKEYS
insert up to four ASCII characters per mouse action. I wouldn't
suggest doing this, however, as is explained below in "CAVEATS".
MOUSKEYS 3.04 Page 17 of 35
If you enter keys from the keyboard ("?", "Ask", or "AskMe"),
MOUSKEYS keeps track of the Scan Codes as you press the keys. As
soon as you release any key, the keyboard sends a "release" Scan
Code. MOUSKEYS then stops looking at the Scan Codes and starts
looking at the Keyboard Buffer. MOUSKEYS uses whatever shows up in
the Keyboard Buffer as the ASCII character. If more than one
character appears in the Keyboard Buffer, it only uses the first
one. If nothing appears in the Keyboard Buffer, MOUSKEYS puts a "do
nothing" in the ASCII character. MOUSKEYS will not let you give it
more than four "push" Scan Codes before giving it a "release" Scan
Code.
The default characters MOUSKEYS uses are as follows: the four MOVEMENT
directions correspond to the four arrow keys (the Grey arrow keys if you
have an Enhanced keyboard), the Left BUTTON is the Enter key, the Right
BUTTON is Escape, the Left/Right BUTTON combination is F1, and the Center
BUTTON (on a 3-button mouse) is F1. The remaining BUTTON combinations
(Center&Left, Center&Right, and Center&Left&Right) are set to 0 (to not
do anything). The following on a single command line would give you the
same results as simply typing "MOUSKEYS":
MOUSKEYS /Enable /StuffKeyboardBuffer /Only /ClipboardContents=""
/LengthOfDelayHorizontal=1 /LengthOfDelayVertical=3
/MoveLeft=Left /MoveRight=Right /MoveUp=Up /MoveDown=Down
/ButtonLeft=Enter /ButtonRight=Escape /ButtonCenter=F1
/ButtonLeft&Right=F1 /ButtonCenter&Left=0
/ButtonCenter&Right=0 /ButtonCenter&Left&Right=0
THE MOUSKEYS ENVIRONMENT VARIABLE
══════════════════════════════════
MOUSKEYS also looks for an environment variable called MOUSKEYS. This
variable can have any of the command line Options listed above (except /U
or its variations). MOUSKEYS reads the Options from the environment
variable MOUSKEYS before it reads the Options on the DOS command line.
Whatever Options you have for the MOUSKEYS environment variable
effectively become your "defaults", but are overridden by anything you
type from the DOS command line.
This could be useful, for example, if you have a particularly sensitive
mouse. If this were the case, you could put the line "SET MOUSKEYS=/L:5"
in your AUTOEXEC.BAT file, which will effectively slow MOUSKEYS down
every time you use it. You can then just worry about changing the
characters for each MOUSKEYS program, and don't have to worry about the
"/L:5" every time you use MOUSKEYS - you only have to worry about it
once.
If you don't know what an Environment is, or what it is used for, I
suggest you read about it in your favorite DOS book.
MOUSKEYS 3.04 Page 18 of 35
╔═══════════════════════════════════════════════════════════════════════╗
║ CODE WORDS RECOGNIZED BY MOUSKEYS ║
╠═══════════════════════════════════════════════════════════════════════╣
║ Alt, LeftAlt, LftAlt, LtAlt, LAlt ║
║ BackSpace, BackSp, BkSpace, BkSp ║
║ Break, Brk ** SEE SPECIAL NOTES ** ║
║ CapsLock, CapsLk, CapLock, CapLk ║
║ Control, Ctrl, Ctl, LeftControl, LeftCtrl, LeftCtl, LftControl, ║
║ LftCtrl, LftCtl, LtControl, LtCtrl, LtCtl, LControl, LCtrl, LCtl ║
║ Delete, Del ║
║ Down, Dn ║
║ End ║
║ Enter, Return, Rtn, Ret ║
║ Escape, Esc ║
║ F1; F2; F3; F4; F5; F6; F7; F8; F9; F10; F11; F12 ║
║ Grey+, Gry+, G+; Grey-, Gry-, G-; Grey*, Gry*, G*; Grey/, Gry/, G/ ║
║ Grey5, Gry5, G5 ║
║ GreyDelete, GreyDel, GryDelete, GryDel, GDelete, GDel ║
║ GreyDown, GryDown, GDown, GreyDn, GryDn, GDn ║
║ GreyEnd, GryEnd, GEnd ║
║ GreyEnter, GryEnter, GEnter, GreyReturn, GreyRtn, GreyRet, ║
║ GryReturn, GryRtn, GryRet, GReturn, GRtn, GRet ║
║ GreyHome, GryHome, GHome ║
║ GreyInsert, GreyIns, GryInsert, GryIns, GInsert, GIns ║
║ GreyLeft, GreyLft, GreyLt, GryLeft, GryLft, GryLt, GLeft, GLft, GLt ║
║ GreyPageDown, GreyPageDn, GreyPgDown, GreyPgDn, GryPageDown, ║
║ GryPageDn, GryPgDown, GryPgDn, GPageDown, GPageDn, GPgDown, GPgDn ║
║ GreyPageUp, GreyPgUp, GryPageUp, GryPgUp, GPageUp, GPgUp ║
║ GreyRight, GryRight, GRight, GreyRt, GryRt, GRt ║
║ GreyUp, GryUp, GUp ║
║ Home ║
║ Insert, Ins ║
║ Left, Lft, Lt ║
║ NumLock, NumLk ║
║ PageDown, PageDn, PgDown, PgDn ║
║ PageUp, PgUp ║
║ Pause ║
║ PrintScreen, PrintScrn, PrintScn, PrintScr, PrtScreen, PrtScrn, ║
║ PrtScn, PrtScr ** SEE SPECIAL NOTES ** ║
║ Right, Rt ║
║ RightAlt, RtAlt, RAlt ║
║ RightControl, RightCtrl, RightCtl, RtControl, RtCtrl, RtCtl, ║
║ RControl, RCtrl, RCtl ║
║ RightShift, RightSft, RtShift, RtSft, RShift, RSft ║
║ ScrollLock, ScrollLk, ScrlLock, ScrlLk ║
║ Shift, Sft, LeftShift, LeftSft, LftShift, LftSft, ║
║ LtShift, LtSft, LShift, LSft ║
║ Space ║
║ SystemRequest, SystemReq, SystemRq, SysRequest, SysReq, SysRq ║
║ Tab; BackTab, BkTab ║
║ Up ║
╚═══════════════════════════════════════════════════════════════════════╝
MOUSKEYS 3.04 Page 19 of 35
DECIMAL ASCII CODES
╔══╤═══════╤═════╦══╤═══╦══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╦═══╤═══╗
║ 1│ Ctl-A │ SOH ║33│ ! ║65│ A ║ 97│ a ║129│ ü ║161│ í ║193│ ┴ ║225│ ß ║
║ 2│ Ctl-B │ STX ║34│ " ║66│ B ║ 98│ b ║130│ é ║162│ ó ║194│ ┬ ║226│ Γ ║
║ 3│ Ctl-C │ ETX ║35│ # ║67│ C ║ 99│ c ║131│ â ║163│ ú ║195│ ├ ║227│ π ║
║ 4│ Ctl-D │ EOT ║36│ $ ║68│ D ║100│ d ║132│ ä ║164│ ñ ║196│ ─ ║228│ Σ ║
║ 5│ Ctl-E │ ENQ ║37│ % ║69│ E ║101│ e ║133│ à ║165│ Ñ ║197│ ┼ ║229│ σ ║
║ 6│ Ctl-F │ ACK ║38│ & ║70│ F ║102│ f ║134│ å ║166│ ª ║198│ ╞ ║230│ µ ║
║ 7│ Ctl-G │ BEL ║39│ ' ║71│ G ║103│ g ║135│ ç ║167│ º ║199│ ╟ ║231│ τ ║
║ 8│ Ctl-H │ BS ║40│ ( ║72│ H ║104│ h ║136│ ê ║168│ ¿ ║200│ ╚ ║232│ Φ ║
║ 9│ Ctl-I │ HT ║41│ ) ║73│ I ║105│ i ║137│ ë ║169│ ⌐ ║201│ ╔ ║233│ ║
║10│ Ctl-J │ LF ║42│ * ║74│ J ║106│ j ║138│ è ║170│ ¬ ║202│ ╩ ║234│ Ω ║
║11│ Ctl-K │ VT ║43│ + ║75│ K ║107│ k ║139│ ï ║171│ ½ ║203│ ╦ ║235│ δ ║
║12│ Ctl-L │ FF ║44│ , ║76│ L ║108│ l ║140│ î ║172│ ¼ ║204│ ╠ ║236│ ∞ ║
║13│ Ctl-M │ CR ║45│ - ║77│ M ║109│ m ║141│ Ä ║173│ ¡ ║205│ ═ ║237│ φ ║
║14│ Ctl-N │ SO ║46│ . ║78│ N ║110│ n ║142│ Ä ║174│ « ║206│ ╬ ║238│ ε ║
║15│ Ctl-O │ SI ║47│ / ║79│ O ║111│ o ║143│ Å ║175│ » ║207│ ╧ ║239│ ∩ ║
║16│ Ctl-P │ DLE ║48│ 0 ║80│ P ║112│ p ║144│ É ║176│ ░ ║208│ ╨ ║240│ ≡ ║
║17│ Ctl-Q │ DC1 ║49│ 1 ║81│ Q ║113│ q ║145│ æ ║177│ ▒ ║209│ ╤ ║241│ ± ║
║18│ Ctl-R │ DC2 ║50│ 2 ║82│ R ║114│ r ║146│ Æ ║178│ ▓ ║210│ ╥ ║242│ ≥ ║
║19│ Ctl-S │ DC3 ║51│ 3 ║83│ S ║115│ s ║147│ ô ║179│ │ ║211│ ╙ ║243│ ≤ ║
║20│ Ctl-T │ DC4 ║52│ 4 ║84│ T ║116│ t ║148│ ö ║180│ ┤ ║212│ ╘ ║244│ ⌠ ║
║21│ Ctl-U │ NAK ║53│ 5 ║85│ U ║117│ u ║149│ ò ║181│ ╡ ║213│ ╒ ║245│ ⌡ ║
║22│ Ctl-V │ SYN ║54│ 6 ║86│ V ║118│ v ║150│ û ║182│ ╢ ║214│ ╓ ║246│ - ║
║23│ Ctl-W │ ETB ║55│ 7 ║87│ W ║119│ w ║151│ ù ║183│ ╖ ║215│ ╫ ║247│ ≈ ║
║24│ Ctl-X │ CAN ║56│ 8 ║88│ X ║120│ x ║152│ ÿ ║184│ ╕ ║216│ ╪ ║248│ Φ ║
║25│ Ctl-Y │ EM ║57│ 9 ║89│ Y ║121│ y ║153│ Ö ║185│ ╣ ║217│ ┘ ║249│ ∙ ║
║26│ Ctl-Z │ SUB ║58│ : ║90│ Z ║122│ z ║154│ Ü ║186│ ║ ║218│ ┌ ║250│ ∙ ║
║27│ Ctl-[ │ ESC ║59│ ; ║91│ [ ║123│ { ║155│ ¢ ║187│ ╗ ║219│ █ ║251│ ║
║28│ Ctl-\ │ FS ║60│ < ║92│ \ ║124│ | ║156│ £ ║188│ ╝ ║220│ ▀ ║252│ ║
║29│ Ctl-] │ GS ║61│ = ║93│ ] ║125│ } ║157│ ¥ ║189│ ╜ ║221│ ▌ ║253│ ² ║
║30│ Ctl-^ │ RS ║62│ > ║94│ ^ ║126│ ~ ║158│ ₧ ║190│ ╛ ║222│ ▐ ║254│ ■ ║
║31│ Ctl-_ │ US ║63│ ? ║95│ _ ║127│ ║159│ ƒ ║191│ ┐ ║223│ ▄ ║255│ ║
║32│ │ SP ║64│ @ ║96│ ` ║128│ Ç ║160│ á ║192│ └ ║224│ α ╠═══╧═══╣
╚══╧═══════╧═════╩══╧═══╩══╧═══╩═══╧═══╩═══╧═══╩═══╧═══╩═══╧═══╩═══════╝
MOUSKEYS 3.04 Page 20 of 35
DECIMAL EXTENDED ASCII CODES
╔═══╤═════════╦═══╤═══════╦═══╤═════════╦════╤═════════╦════╤═══════════╗
║ @3│ Ctl-@ ║@38│ Alt-L ║@73│ PgUp ║ @94│ Ctl-F1 ║@114│ Ctl-PrtSc ║
║@15│ Sft-Tab ║@44│ Alt-Z ║@75│ Left ║ @95│ Ctl-F2 ║@115│ Ctl-Left ║
║@16│ Alt-Q ║@45│ Alt-X ║@77│ Right ║ @96│ Ctl-F3 ║@116│ Ctl-Right ║
║@17│ Alt-W ║@46│ Alt-C ║@79│ End ║ @97│ Ctl-F4 ║@117│ Ctl-End ║
║@18│ Alt-E ║@47│ Alt-V ║@80│ Down ║ @98│ Ctl-F5 ║@118│ Ctl-PgDn ║
║@19│ Alt-R ║@48│ Alt-B ║@81│ PgDn ║ @99│ Ctl-F6 ║@119│ Ctl-Home ║
║@20│ Alt-T ║@49│ Alt-N ║@82│ Ins ║@100│ Ctl-F7 ║@120│ Alt-1 ║
║@21│ Alt-Y ║@50│ Alt-M ║@83│ Del ║@101│ Ctl-F8 ║@121│ Alt-2 ║
║@22│ Alt-U ║@59│ F1 ║@84│ Sft-F1 ║@102│ Ctl-F9 ║@122│ Alt-3 ║
║@23│ Alt-I ║@60│ F2 ║@85│ Sft-F2 ║@103│ Ctl-F10 ║@123│ Alt-4 ║
║@24│ Alt-O ║@61│ F3 ║@86│ Sft-F3 ║@104│ Alt-F1 ║@124│ Alt-5 ║
║@25│ Alt-P ║@62│ F4 ║@87│ Sft-F4 ║@105│ Alt-F2 ║@125│ Alt-6 ║
║@30│ Alt-A ║@63│ F5 ║@88│ Sft-F5 ║@106│ Alt-F3 ║@126│ Alt-7 ║
║@31│ Alt-S ║@64│ F6 ║@89│ Sft-F6 ║@107│ Alt-F4 ║@127│ Alt-8 ║
║@32│ Alt-D ║@65│ F7 ║@90│ Sft-F7 ║@108│ Alt-F5 ║@128│ Alt-9 ║
║@33│ Alt-F ║@66│ F8 ║@91│ Sft-F8 ║@109│ Alt-F6 ║@129│ Alt-0 ║
║@34│ Alt-G ║@67│ F9 ║@92│ Sft-F9 ║@110│ Alt-F7 ║@130│ Alt-- ║
║@35│ Alt-H ║@68│ F10 ║@93│ Sft-F10 ║@111│ Alt-F8 ║@131│ Alt-= ║
║@36│ Alt-J ║@71│ Home ║ │ ║@112│ Alt-F9 ║@132│ Ctl-PgUp ║
║@37│ Alt-K ║@72│ Up ║ │ ║@113│ Alt-F10 ║ │ ║
╚═══╧═════════╩═══╧═══════╩═══╧═════════╩════╧═════════╩════╧═══════════╝
DECIMAL KEYBOARD SCAN CODES (STANDARD KEYBOARD)
╔══╤══════╦══╤═══════╦══╤════════╦══╤════════╦══╤════════╦══╤════════╗
║ │ ║16│ q ║32│ d ║48│ b ║64│ F6 ║80│ Down ║
║ 1│ Esc ║17│ w ║33│ f ║49│ n ║65│ F7 ║81│ PgDn ║
║ 2│ 1 ║18│ e ║34│ g ║50│ m ║66│ F8 ║82│ Ins ║
║ 3│ 2 ║19│ r ║35│ h ║51│ , ║67│ F9 ║83│ Del ║
║ 4│ 3 ║20│ t ║36│ j ║52│ . ║68│ F10 ║84│ SysReq ║
║ 5│ 4 ║21│ y ║37│ k ║53│ / ║69│ NumLk ║85│ ║
║ 6│ 5 ║22│ u ║38│ l ║54│ RShift ║70│ ScrlLk ║86│ ║
║ 7│ 6 ║23│ i ║39│ ; ║55│ Grey* ║71│ Home ║87│ F11 ║
║ 8│ 7 ║24│ o ║40│ ' ║56│ Alt ║72│ Up ║88│ F12 ║
║ 9│ 8 ║25│ p ║41│ ` ║57│ Space ║73│ PgUp ║89│ ║
║10│ 9 ║26│ [ ║42│ LShift ║58│ CapsLk ║74│ Grey- ║90│ ║
║11│ 0 ║27│ ] ║43│ \ ║59│ F1 ║75│ Left ║91│ ║
║12│ - ║28│ Enter ║44│ z ║60│ F2 ║76│ Grey5 ║92│ ║
║13│ = ║29│ Ctrl ║45│ x ║61│ F3 ║77│ Right ║93│ ║
║14│ BkSp ║30│ a ║46│ c ║62│ F4 ║78│ Grey+ ║94│ ║
║15│ Tab ║31│ s ║47│ v ║63│ F5 ║79│ End ║95│ ║
╚══╧══════╩══╧═══════╩══╧════════╩══╧════════╩══╧════════╩══╧════════╝
DECIMAL KEYBOARD SCAN CODES (ENHANCED KEYBOARD)
╔═════════════╤════════════╦══════╤═══════════╦════════╤════════════╗
║224,28 │ GreyEnter ║224,71│ GreyHome ║224,80 │ GreyDown ║
║224,29 │ RightCtrl ║224,72│ GreyUp ║224,81 │ GreyPgDn ║
║224,42,224,55│ PrtScr ║224,73│ GreyPgUp ║224,82 │ GreyIns ║
║224,53 │ Grey/ ║224,75│ GreyLeft ║224,83 │ GreyDel ║
║224,56 │ RightAlt ║224,77│ GreyRight ║(Alt),84│ Alt-SysReq ║
║(Ctrl),224,70│ Ctrl-Break ║224,79│ GreyEnd ║225,29 │ Pause ║
╚═════════════╧════════════╩══════╧═══════════╩════════╧════════════╝
MOUSKEYS 3.04 Page 21 of 35
MOUSKEYS AND THE MOUSE CURSOR
═════════════════════════════
When you enter a * as one (or more) of the button characters (for
example, MOUSKEYS /BL:*), MOUSKEYS has a radical personality change.
First of all, mouse movements no longer cause MOUSKEYS to type keystrokes
from the keyboard. Instead, mouse movements control the Mouse Cursor.
The Mouse Cursor is usually a box or an arrow, in a color different than
the rest of the screen, that follows the mouse around the screen. If you
use a mouse very much, you've probably seen the Mouse Cursor many times
before and know exactly what I'm talking about.
When you tell MOUSKEYS to use the Mouse Cursor with a *, you are telling
MOUSKEYS to be one of three things: a Menu Picker, a Cursor Mover, and/or
a Clipboard. When using MOUSKEYS as a Menu Picker, MOUSKEYS assumes you
are in a program with menus somewhere on the screen, and that you can
pick the menu items with a number or a letter from the keyboard. Based
on where the Mouse Cursor is when you press and release the * button,
MOUSKEYS looks at the screen immediately surrounding the Mouse Cursor and
guesses which character(s) you want MOUSKEYS to "type". MOUSKEYS goes
through a pretty sophisticated process to guess which character(s) to
type. This process is discussed below under "MOUSKEYS AND MENUS".
You can also have MOUSKEYS be a Menu Picker, but instead of having it
guess which character you want it to use by looking at the screen, you
can tell it exactly which character you want to use. You do this by
putting the Mouse Cursor directly over the character you want to MOUSKEYS
to use, press a Shift key on the keyboard, then press and release a *
mouse button. Note that the /A and /O modes are still in effect (if the
/A mode is selected, MOUSKEYS will type the character you are pointing at
and then type an <Enter> key).
To use MOUSKEYS as a Cursor Mover, you tell MOUSKEYS where you would like
the Text Cursor to be (the Text Cursor is the flashing line or box that
shows you where the text gets entered when you type on the keyboard). To
have MOUSKEYS move the Text Cursor, you put the Mouse Cursor where you
would like the Text Cursor to be. You then press the Ctrl and Alt keys
at the same time, then press and release a * button, and then release the
Ctrl and Alt keys (Ctrl-Alt-*Btn). When you do this, MOUSKEYS will start
"typing" up/down and left/right arrow keys, trying to get the Text Cursor
to end up underneath the Mouse Cursor.
Using MOUSKEYS as a Cursor Mover is a very handy feature for certain
programs, but does have limitations. First of all, MOUSKEYS only "types"
arrow keys to try and move the Text Cursor. MOUSKEYS will not type Tab,
PgUp, etc. that some programs (for example, certain databases and
spreadsheets) need to move the Text Cursor around the screen. Using
MOUSKEYS in a program that doesn't use arrow keys to move the Text Cursor
can have unpredictable results.
MOUSKEYS 3.04 Page 22 of 35
Also, with some programs, there are certain parts of the screen where the
Text Cursor cannot go (sometimes there is a menu line somewhere on the
screen, or in a Word Processor sometimes you cannot have the cursor go
past the last character on a line). If you put the Mouse Cursor into one
of these "forbidden" areas on the screen and tell MOUSKEYS to try and
move the Text Cursor there (with a Ctrl-Alt-*Btn), MOUSKEYS will, of
course, fail. Exactly where the Text Cursor ends up may or may not even
be close to where you wanted it to be. Be sure to tell MOUSKEYS to move
the Text Cursor to somewhere where the Cursor can, in fact, go.
Also, in some programs, typing a single arrow key can move the Text
Cursor more than one space in a particular direction (for example, if you
have double-spacing turned on in a Word processor, typing a down arrow
moves the Cursor down two lines on the screen, not just one). MOUSKEYS
counts the number of spaces (or lines) between where the Cursor is and
where you want it to be, and "types" the number of arrows it thinks it
will take to move it. MOUSKEYS assumes an arrow key will move the Cursor
one space or one line. If this is not true, MOUSKEYS will probably not
move the Cursor correctly.
When using MOUSKEYS as a Clipboard, you are able to select text from the
screen using the Mouse Cursor, and copy it into the Clipboard. You can
then have MOUSKEYS "type" the text stored in the Clipboard just as if you
were typing it from the keyboard. This works similar to the Copy/Paste
functions built into many types of programs these days, like Windows,
which also have a Clipboard.
When you press a * button, nothing appears to happen right away. If you
release the * button without having moved the Mouse Cursor, MOUSKEYS
becomes a Menu Picker. MOUSKEYS assumes you are pointing at a menu item,
and looks at the screen immediately surrounding the Mouse Cursor to find
character(s) to "type" (or simply uses the character directly under the
Mouse Cursor if a Shift key is pressed). If MOUSKEYS is unable to find
anything it thinks is a menu item, it beeps at you (what MOUSKEYS thinks
is a menu item is discussed below under "MOUSKEYS AND MENUS").
If you move the Mouse Cursor after pressing the * button, MOUSKEYS will
start marking the screen. MOUSKEYS will keep marking the screen until
you release the * button. As soon as you release the * button, whatever
you have marked on the screen is copied into the Clipboard, and the
screen is unmarked. If there was anything in the Clipboard left from a
previous copy, it is overwritten with the new copy information. MOUSKEYS
will keep whatever it has in the Clipboard until it is replaced by new
copy information or until MOUSKEYS is removed from memory (with a
MOUSKEYS /U). Even a MOUSKEYS /E, which normally Resets everything, does
not reset the Clipboard.
MOUSKEYS 3.04 Page 23 of 35
While MOUSKEYS is marking the screen for characters to put into the
Clipboard, MOUSKEYS assumes that the screen is completely static (not
changing). If, for some reason, the screen is scrolling up or down or
you are typing extra stuff on the keyboard while MOUSKEYS is trying to
mark the screen, the "marking", "unmarking", and "copying" that MOUSKEYS
is doing will probably get really screwed up. The bottom line is to make
sure that what you want to copy into the clipboard is completely on
screen before you start marking, and that you don't do anything to change
what is on the screen during the "marking" and "unmarking".
You must copy at least two characters into the Clipboard. If you start
marking the screen with the Mouse Cursor, and then bring the Mouse Cursor
back to where you started, and then release the * button (effectively
only "marking" one character), MOUSKEYS assumes you changed your mind
about using the Clipboard and beeps at you. Also, the Clipboard is
limited in size (500 characters, or 1/4 of a standard 25 row by 80 column
screen). If you try to copy more than 500 characters from the screen
into the Clipboard, MOUSKEYS will beep at you.
To have MOUSKEYS "type" the contents of the Clipboard, you must hold the
Ctrl key down on the keyboard, press and release a * mouse button, and
then release the Ctrl key (Ctrl-*Btn). If the Mouse Cursor moves between
the press and the release, MOUSKEYS beeps at you.
When you tell MOUSKEYS to type from the Clipboard, it is very important
to keep in mind that there are two cursors on the screen - the Text
Cursor and the Mouse Cursor. When MOUSKEYS starts typing from the
Clipboard, your program will think you are typing text at the Text
Cursor. MOUSKEYS really doesn't care where the Text Cursor is at the
time, and the program doesn't even know that the Mouse Cursor exists.
MOUSKEYS just starts typing. You need to make sure the Text Cursor is
where you want it BEFORE you do a Ctrl-*Btn (you can move the Text Cursor
with a Ctrl-Alt-*Btn).
Even though you can have more than one * button, there is only one
Clipboard. It doesn't matter which * button you press and release - to
MOUSKEYS they're all the same.
Whether MOUSKEYS is being used as a Menu Picker, Cursor Mover, or
Clipboard, MOUSKEYS is trying to get character information from the
screen. MOUSKEYS can only do this in a program that is in a "text"
screen mode. If a program is in a "graphics" mode, the screen is stored
as a bunch of colored dots, called pixels (a simple 320x200 CGA graphics
screen is stored as 64,000 dots, or pixels). MOUSKEYS cannot reliably
get character information from a screen that is stored as dots. A screen
in a "text" mode is stored as a series of characters (a standard 25x80
text screen is stored as 2,000 characters). MOUSKEYS can look at the
characters on a "text" screen, and make an educated guess about what
keystroke corresponds to a menu item, can move the Text Cursor around the
screen, or can "mark" characters on the screen and copy the characters
from the screen into the Clipboard.
MOUSKEYS 3.04 Page 24 of 35
Because of this, MOUSKEYS only turns on the Mouse Cursor when the screen
is in a "text" mode (and one or more of the buttons is a *). If one or
more of the buttons is a *, and the screen is in a "graphics" mode,
MOUSKEYS does not do anything when the mouse is moved or a * button is
pressed. As soon as the screen returns to a "text" mode, the Mouse
Cursor is restored and the * button starts looking for menu items again.
Another consequence of MOUSKEYS using screen information for a * button
is that MOUSKEYS is only able to STUFF the Keyboard Buffer with ASCII
codes when using the * button. What is stored on a screen is ASCII
codes, and MOUSKEYS has no way of telling what Scan Codes to use to
"type" the character. There is a rather lengthy discussion of this above
under "COMMAND LINE OPTIONS", but it boils down to the fact that there is
more that one way to enter almost any ASCII code (for example, 'A' could
be entered as Shift-a, CapsLk-a, Alt-65, and who knows how many other
ways).
Since a mouse has at least two buttons, there are at least three button
combinations you can have MOUSKEYS deal with (Left, Right, and both
buttons at the same time). Even though MOUSKEYS can only use ASCII codes
with the button designated as a *, the other button combinations do not
have to use only ASCII codes. For example, if you do a
"MOUSKEYS/BL:*/BR:'r'/K", the left mouse button acts as a Menu Picker and
gets ASCII codes from the screen, but the right button simulates KEYBOARD
hardware interrupts with an 'r'. As long as you have at least one button
designated as a Menu Picker, the mouse movements only control the Mouse
Cursor, and any characters you have for mouse movements (MOUSKEYS
/MoveLeft:'L', for example) are ignored.
It is also important (at least from my perspective) that you know that
the Mouse Cursor is generated by the Mouse Driver (MOUSE.COM, MOUSE.EXE,
or MOUSE.SYS), not by MOUSKEYS. MOUSKEYS simply tells the Mouse Driver
whether the Mouse Cursor should be turned on or not. I tell you this
because sometimes the mouse leaves behind Mouse Droppings (yes, that's
what they're called), which are little scattered remnants of where the
mouse has been when the Mouse Cursor is turned on and something changes
on the screen. If you've never seen Mouse Droppings before, you will.
Anyway, the point is to let you know that Mouse Droppings are caused by
the Mouse Driver, not by MOUSKEYS.
MOUSKEYS 3.04 Page 25 of 35
MOUSKEYS AND MENUS
══════════════════
If you press and release a * mouse button while the Mouse Cursor is
turned on, MOUSKEYS is used as a Menu Picker. This means that MOUSKEYS
assumes you are pointing at a pull-down or pop-up menu somewhere on the
screen, and that you can type a number or letter from the keyboard to
pick one of the menu items. Typical menus might look like the following:
┌───────────────────────┐ F1 Help F2 File F3 Exit
│ 1. Get file │ Do you want to continue (Y/N)?
│ 2. Save File │ Press <─┘ to continue.
│ 3. Delete file │ <B>egin <E>nd
│ 4. Insert file │ [01] Start [02] End
│ 5. Print working copy │ [DOS] [WP] [123] [WIN]
│ 6. Erase working copy │
│ 7. Use macros │
└───────────────────────┘
I have looked at the menus of several programs to determine the following
approach, but it does not always work correctly with every program.
First of all, MOUSKEYS looks directly under the Mouse Cursor to see if
the screen looks like a function key (a character that is not a number or
a letter, followed by a capital F, followed immediately by a number
between 1 and 12). MOUSKEYS also looks for modifiers in front of the F,
such as Sft-, Ctrl-, etc. that may indicate a "shifted" function key. If
MOUSKEYS sees something that looks like a Function key, it STUFFs the
appropriate ASCII character into the Keyboard Buffer.
If a function key is not directly under the cursor, MOUSKEYS looks
directly under the cursor to see if it is pointing at a 'Y/N', 'YES/NO',
or 'YES OR NO'. If it is, and the Mouse Cursor is over a part of the
words 'YES' or 'NO', MOUSKEYS types a 'Y' or an 'N', as appropriate. If
the /A mode is selected, MOUSKEYS will type an <Enter> key after typing
the Y or N.
If neither of these is the case, MOUSKEYS then looks directly under the
Mouse Cursor for the words Enter, Return, CR, <─┘, Space, Esc, Escape,
Home, End, Ins, Del, PgUp, PgDn, or anything that looks like a direction
arrow. If MOUSKEYS sees one of these words (or arrows), it STUFFs the
appropriate ASCII character into the Keyboard Buffer.
If none of these words is found, MOUSKEYS then looks at the word under
the Mouse Cursor to see if it has 1 character (a letter or a number) that
is different than the rest of the characters in the word. The character
can be different in that it either is surrounded by characters that are
not letters or numbers (for example, <B>egin), or can be in a different
color than the rest of the characters in the word. The word must be at
least three characters long, or MOUSKEYS will not bother trying to test
it. If MOUSKEYS sees a character that is different, MOUSKEYS STUFFs the
character into the Keyboard Buffer. If the /A mode is selected, MOUSKEYS
types an <Enter> key after typing the appropriate character.
MOUSKEYS 3.04 Page 26 of 35
If None of these tests work, MOUSKEYS then assumes you are actually in
the middle of a pull-down menu box, which has some sort of border around
it. MOUSKEYS goes backward from the Mouse Cursor until it finds the left
edge of the menu border (an "edge-of-Box" character - '│', '║', or '|',
or two spaces in a row). MOUSKEYS then goes forward until it finds a
function key, capital letter, or number that is set apart from the
remaining characters (not surrounded by other capital letters or
numbers), or until it reaches the other side of the menu border (another
"edge-of-Box" character or four spaces in a row). If MOUSKEYS finds a
function key, capital letter, or single-digit number, it types it. If
the /A mode is selected, and the character typed was a letter or a number
(not a function key), MOUSKEYS then types an <Enter> key. If MOUSKEYS
finds a multiple-digit number (e.g., 01, 99, or 123456), MOUSKEYS types
the number and then types an <Enter> key.
If MOUSKEYS cannot find a menu item inside a box, but the mouse cursor is
on top of a word on the screen (a "word" in this case is a series of
letters and/or numbers), MOUSKEYS "types" the entire word followed by the
Enter key.
If none of these tests work, MOUSKEYS is confused and beeps at you.
I think MOUSKEYS does a pretty good job of finding menu items on the
screen, but there are ways you can help it be better. As a rule, the
closer the Mouse Cursor is to the actual character or word on the screen
you want MOUSKEYS to use, the better MOUSKEYS will work. In the example
menu shown above, for instance, let's say you wanted to pick item #4,
"Insert File". You want MOUSKEYS to type a 4. MOUSKEYS would find the 4
as long as you had the Mouse Cursor inside the menu box, anywhere past
the left side of the box, and no more than four spaces past the end of
the words "Insert File". Of course, the closer you had the Mouse Cursor
to the 4 on the screen, the faster MOUSKEYS could figure out that you
want it to type a 4.
MOUSKEYS 3.04 Page 27 of 35
CHANGING MODES ON THE FLY
═════════════════════════
There are special things MOUSKEYS can do when you have the Ctrl, Alt,
and/or Shift keys pressed on the keyboard at the same time you press and
release one of the mouse buttons.
If you have one of the mouse buttons designated as a Menu Picker (for
example, 'MOUSKEYS /BL:*' designates the left mouse button as a Menu
Picker), and you hold down the one of the Shift keys while you press and
release the Menu Picker button, MOUSKEYS types the character that is
directly under the Mouse Cursor. It bypasses the normal menu routine it
goes through to "guess" which character you want it to type. This is
discussed in more detail in the above section, "MOUSKEYS AND THE MOUSE
CURSOR".
If you have one of the mouse keys designated as a Menu Picker, and you
hold down a Ctrl key while you press and release a * button, MOUSKEYS
"types" whatever is in the Clipboard. This is also discussed in the
above section, "MOUSKEYS AND THE MOUSE CURSOR" (as is a discussion on how
to copy information from the screen into the Clipboard).
If you have both the Ctrl and Alt keys pressed while you press and
release a * button (Ctrl-Alt-*Btn), MOUSKEYS tries to move the Text
Cursor so that it ends up underneath the Mouse Cursor. There is a
detailed description of how this works in the section above, "MOUSKEYS
AND THE MOUSE CURSOR".
You can use the Alt key on the keyboard to have MOUSKEYS toggle a mouse
button between being a Menu Picker and being a regular MOUSKEYS button
(where you tell MOUSKEYS exactly what character you want the button to
type). If a button is currently designated as a * button, and you press
an Alt key while pressing and releasing the * button, the button changes
from being a * button to being a regular button. The reverse is also
true. If a button is designated as a regular button, and you press and
release the mouse button while an Alt key is pressed, the button changes
from a regular button to a * button.
To keep you aware of what's going on while changing button functions with
the Alt key, MOUSKEYS uses the speaker. When you change a button from a
regular button to a * button with an Alt key, MOUSKEYS beeps with a HIGH
pitch (to indicate that you are turning the Menu Picker ON). If there
was already another button designated as a * button when you did this,
MOUSKEYS beeps once. If this button becomes the first * button (which
will turn ON the Mouse Cursor), MOUSKEYS beeps twice.
The reverse is also true. If you change a * button to a regular button
with an Alt Key, MOUSKEYS beeps with a LOW pitch (to indicate that you
are turning the Menu Picker OFF). If there is still another * button
designated on the mouse, MOUSKEYS will only beep once. If this was the
only * button (and changing it to a regular button turns the Mouse Cursor
OFF), MOUSKEYS beeps twice.
MOUSKEYS 3.04 Page 28 of 35
THE MICROSOFT MOUSE DRIVER
══════════════════════════
My opinion: Microsoft did a lousy job of designing both its Mouse Driver
and Microsoft Windows. There is a description of some of the problems
related to the interaction of these two programs under the "MOUSKEYS /R"
Option above, which I won't go over again. But there is also another
issue related more specifically to the Microsoft Mouse Driver (and all
mice which emulate the Microsoft Mouse Driver, because they have to do
exactly what Microsoft does to be compatible).
When a program wants to use a mouse, the first thing it does is ask the
Mouse Driver if there is a mouse installed. If the mouse isn't
installed, nothing happens. If the mouse is installed, the Mouse Driver
tells the calling program about it. Unfortunately, no matter how nicely
you ask it, the Mouse Driver also does something else - it Resets itself.
The Mouse Driver effectively loses its brains and memories of everything
that went on before that time.
The fact that the Mouse Driver loses its brains during Resets causes
problems with MOUSKEYS, and any other programs (especially TSR's) that
have to deal with mice. Let's say you install MOUSKEYS in your
AUTOEXEC.BAT file, and leave it ENABLEd - you like to use your mouse at
the DOS command line (this can be handy, especially if you use CED,
DOSKEY, or some other DOS command line editor). You start up a program
(let's call it Program) that uses a mouse. When you start Program, it
asks the Mouse Driver if the mouse is installed. As soon as this
happens, the Mouse Driver resets itself and loses all memories it had of
MOUSKEYS even existing.
You're in Program for awhile, and then quit back out to DOS. You can't
use MOUSKEYS any more because the Mouse Driver forgot MOUSKEYS was there.
MOUSKEYS has a way to handle this situation, but it upsets me a more than
a little that there is even a situation to handle.
Every time you type MOUSKEYS [options] at the DOS prompt, MOUSKEYS
reminds the Mouse Driver that it's there. In the above situation, after
you quit Program, typing "MOUSKEYS" at the DOS prompt will "reinstall"
MOUSKEYS by reminding the Mouse Driver that it's there (or better yet,
create a Program.BAT batch file to start Program, and put a "MOUSKEYS"
line at the END of the batch file; when you quit Program, MOUSKEYS will
remind the Mouse Driver that it is there).
MOUSKEYS 3.04 Page 29 of 35
CAVEATS
═══════
If MOUSKEYS isn't working with a program that you think it should be,
there are several possible reasons:
1. MOUSKEYS has been DISABLEd (with MOUSKEYS /D).
2. MOUSKEYS is STUFFing the Keyboard Buffer with ASCII codes (MOUSKEYS
/S), when it should be simulating KEYBOARD hardware interrupts
(MOUSKEYS /K), or vice versa.
3. The ASCII characters and/or Scan Codes MOUSKEYS is using aren't
what the program expects to see.
4. The Mouse Driver (MOUSE.COM, MOUSE.EXE, or MOUSE.SYS) has been
reset and doesn't know MOUSKEYS is there any more.
5. The Mouse Hardware needs to be Reset (for details, see the
description under the "MOUSKEYS /R" Option above).
6. In Menu Picker mode, the program is in a "graphics" screen mode
(MOUSKEYS needs a "text" screen mode to be a Menu Picker).
7. In Menu Picker mode, MOUSKEYS is unable to determine the correct
character(s) it should type.
8. In Menu Picker mode, the /O option is selected when you really want
the /A option, or vice versa. These options determine whether or
not MOUSKEYS types an <Enter> key after picking from a menu. See
the descriptions above for details.
Typing MOUSKEYS /T should resolve most situations. MOUSKEYS /T will show
you whether MOUSKEYS is ENABLEd or DISABLEd, whether it is in /S or /K
mode, whether it is in /A or /O mode, what the ASCII characters and Scan
Codes are, and will also remind the Mouse Driver of its existence.
MOUSKEYS /T should be your main troubleshooting tool.
When using the KEYBOARD interrupt Option (MOUSKEYS /K), be careful. The
method MOUSKEYS uses to "fake" the computer into accepting a Scan Code
doesn't always work, and can take a long time (in computer terms) to do.
When it doesn't work, it will almost always crash the computer - you will
have to reboot.
In addition, when using the KEYBOARD interrupt Option (MOUSKEYS /K),
MOUSKEYS may not send Scan Codes the way you think it does. When
MOUSKEYS is processing the Scan Codes for a particular mouse action, it
first goes through the four "push" Scan Codes, one by one, and inserts
them. Then, it goes through the same Scan Codes, in the same order, and
inserts the four "release" Scan Codes. If you are having a problem with
MOUSKEYS not sending Scan Codes the way you think it is, it could be
because the "pushes" and "releases" are in the same order. I can't think
of a situation where this would be a problem, but it is possible.
MOUSKEYS 3.04 Page 30 of 35
If you are entering Scan Codes with &nn,nn,nn,nn, do NOT enter
Ctrl-Alt-Del with &29,56,83. This will cause MOUSKEYS to send a
Ctrl-Alt-Del to your computer while you are trying to telling MOUSKEYS
that you want it to use Ctrl-Alt-Del, and your computer will crash and
burn. If you want, for some obscure reason, to have one of your mouse
buttons do a Ctrl-Alt-Del, you need to enter it with #29,56,83 or use the
Ctrl-Alt-Del Code Word combination. Do not enter &29,56,83.
When entering Scan Codes with ? (or Ask or AskMe), there are two
"special" keyboard sequences that MOUSKEYS cannot handle correctly. They
are Ctrl-Alt-Del and Pause. If you want your mouse to do a Ctrl-Alt-Del,
enter it with "#29,56,83" or "Ctrl-Alt-Del". If you want to do a Pause,
enter it with "#225,29" or "Pause".
MOUSKEYS 3.04 Page 31 of 35
WHY I WROTE MOUSKEYS THE WAY I DID
══════════════════════════════════
In case you haven't been able to tell yet, I use DOS all the time, and I
write batch files to automate almost everything I do. My computer at
home isn't very fast, doesn't have a very big hard drive, and doesn't
have very much memory - those things cost more money than I am able to
spend. I don't run Windows unless there's no other choice, and even then
only under protest. I also don't use programs with fancy graphics
screens when text screen programs will do. Most of the time, graphics
don't provide any real functional benefit, and just slow things down
enough that you believe you have to spend more money and upgrade your
hardware.
I realize I am being passed by in the latest Microsoft Windows rage, but
I can still do everything I need to do by using DOS and DOS programs.
That could change in the future, but it is still true today. I wrote
MOUSKEYS in a way that is very useful for the way I do things on my PC,
and, I suspect, the way many other people do things as well.
I wrote MOUSKEYS with the intent that it would be used mainly in Batch
files, so that MOUSKEYS will be automatically loaded each time you want
to use a mouse. The other choice was to make MOUSKEYS with a hot-key
sensor. When you pushed the hot-key, a window would pop up and let you
change the things you can change now with the MOUSKEYS Options (/L:nn,
/E, etc.). The problem I had with this choice was two-fold.
First of all, a hot-key program isn't always able to pop up a window. If
you're running any kind of graphics program, or even some text programs
(depending on how they're written), the computer simply will not let you
pop a window onto the screen.
The biggest reason for writing it as I did, however, is because of
memory. Writing MOUSKEYS as a hot-key program would take up a lot more
RAM. MOUSKEYS uses about 6K of RAM, but a hot-key option would easily
take that up to at least 10K. I also wrote MOUSKEYS entirely in Assembly
Language, and took special pains to make MOUSKEYS as small and fast as I
know how to make it. On my PC, RAM is the most precious asset I have.
There are a couple of disadvantages in writing MOUSKEYS this way,
however. First of all, to change Options, even after it is installed in
memory, you need the executable file MOUSKEYS.COM to be accessible (on
your hard drive or on one of your floppies). If you have a hard drive,
you can put MOUSKEYS in a directory that is in your PATH. If you don't
have a hard drive, you will need a copy of MOUSKEYS.COM on one of the
floppies that you use to start your program.
The other disadvantage is that MOUSKEYS can be a little bit overwhelming
to use. It is powerful, and it has a lot of Options to pick from. Once
you figure out how to use it with a particular program the first time,
however, writing a batch file will automate the process for you. You
should only have to do the "hard part" once.
MOUSKEYS 3.04 Page 32 of 35
A WORD FROM THE SPONSOR
═══════════════════════
MOUSKEYS is a free program. If you like it and use it, do something nice
for someone else in return. I will accept niceties to myself in the form
of $. I have never seen a program quite like MOUSKEYS anywhere on the
market.
You can freely copy and distribute MOUSKEYS.COM, as long as it is
distributed along with this MOUSKEYS.DOC, and neither file has been
modified in any way. You cannot charge anyone in any way for MOUSKEYS,
except to recover your actual costs for disks and shipping (you cannot
charge for "handling"). You do need my permission to distribute MOUSKEYS
as a "companion" to some other program.
OTHER PROGRAMS
══════════════
If you like MOUSKEYS, I have written some other programs you may find
useful.
CLOCK
Shows a clock on your screen all the time. Also has two alarms
that beep at you when it's time for an appointment.
JOYKEYS
Lets you use your joystick(s) with any program.
PRTSCR
Sends all of your PrintScreens to a file instead of a printer. A
good way to transfer data between two programs, even if they won't
normally "talk" to each other.
PRTSCRFF
Modifies your PrintScreen so that each new PrintScreen gets put on
a new sheet of paper (especially useful if you have a Laser
printer).
SCANCODE
Lets you simulate keystrokes from batch files. Helpful in getting
past the "starting screens" of most programs.
SERIAL
Shows the status of your serial (COM) ports on screen. Shows the
bit rate, parity, status of the leads (DTR, DSR, etc.). An
excellent way to troubleshoot modem problems.
SLOWDOWN
Slows down a fast computer so you can run older programs that
require a PC/XT or PC/AT.
MOUSKEYS 3.04 Page 33 of 35
WARRANTY
════════
There is no warranty of any kind, either expressed or implied, supplied
with MOUSKEYS. As with any software, especially TSR's, it may or may not
work with other software that you may have. I have done my best to make
sure MOUSKEYS won't screw anything up, but, again, there is no guarantee.
If you find any "bugs" in this program, or see something that you wish
were different, please let me know. I can only improve MOUSKEYS if I
know what you think needs to improve.
HAVE FUN!
Bret Johnson
6775 South Logan Street
Littleton, CO 80122-1249
(303) 795-5084
bretjohn@aol.com
REVISION HISTORY
════════════════
04/06/93 v1.00
04/26/94 v2.00
* Added the * button (Menu Picker/Clipboard) Option, and all of the
associated Options.
* Added MOUSKEYS environment variable support.
* Changed memory access technique so MOUSKEYS can be loaded into high
memory.
* Improved the code for the /K (simulate KEYBOARD hardware interrupt)
Option, making it more reliable and work with more programs.
* Added the Enhanced Keyboard test, making the default movement Scan
Codes grey arrows rather than white arrows where applicable.
04/28/94 v2.01
* Fixed problem that would not allow the /L:nn Option to be in the
environment variable "MOUSKEYS" (a rather glaring problem, since it
is exactly the way I recommended using the environment).
05/05/94 v2.02
* Once again improved the code for the /K (simulate KEYBOARD hardware
interrupt) Option, making it work with more programs.
09/08/94 v2.10
* Once again improved the code for the /K (simulate KEYBOARD hardware
interrupt) Option.
* Improved the "Mouse Droppings" syndrome - shouldn't happen near as
often now.
* Added support for multiple-digit numbers when in Menu-Picker mode.
* Corrected problem related to marking the screen for the Clipboard.
11/10/94 v2.11
* Corrected a small error that sometimes occurred when obtaining a
number from the command line or environment variable.
MOUSKEYS 3.04 Page 34 of 35
02/15/95 v3.00
* Added "longhand" forms for Options.
* Added "*-" (turn MenuPicker off) Option.
* Added typing the word the Mouse Cursor is on followed by the Enter
key to the end of the Menu-Picker routine.
* Added Code Words as a way to enter ASCII and Scan Codes.
* Modified the Status Table Option so that it gives a description of
the key when possible, and not just the decimal codes.
* Added a timing loop to allow multiple button presses (for example,
pushing the left and right mouse buttons at the same time) to be
handled more cleanly. It used to be really hard to push and
release multiple mouse buttons at the same time and have MOUSKEYS
do what you wanted it to do. This is no longer a problem.
* Added the /C:"Text" (fill the Clipboard) command line Option.
* Add the Cursor Mover option (Ctrl-Alt-*Btn).
* Added the Mouse Driver speed enhancement.
05/10/95 v3.01
* Had problems recognizing highlighted characters in a word (during
the menu-picker routine) using certain versions of the Microsoft
Mouse Driver. This has been fixed.
05/26/95 v3.02
* Worked around a bug in certain versions of the Microsoft Mouse
Driver that would not let MOUSKEYS correctly recognize Bold
characters in a word during the menu-picker routine.
01/04/96 v3.03
* Added the /O (ONLY) and /A (ALWAYS) options.
02/04/96 v3.04
* Certain extended text modes (such as those with 132 columns)
sometimes would fool MOUSKEYS into thinking they were graphics
modes. MOUSKEYS can now recognize these as text modes.
MOUSKEYS 3.04 Page 35 of 35